import { defineStore } from 'pinia'
import { ref, computed, markRaw } from 'vue'

export const useCesiumStore = defineStore('cesium', () => {
  // 存储 viewer 实例,全局共享viewer
  const viewer = ref(null)

  // getter 获取 viewer
  const getViewer = computed(() => viewer.value)

  // 设置 viewer 的方法
  function setViewer(viewerInstance) {
    //使用 Promise 包装返回值，允许异步处理
    return new Promise((resolve) => {
      // 使用 markRaw 防止 Vue 对大型对象进行响应式处理,提高性能
      viewer.value = markRaw(viewerInstance)
      resolve(viewer.value)
    })
  }

  return {
    viewer,
    getViewer,
    setViewer,
  }
})
